gusucode.com > 阵列信号处理书的源码 > MATALB 程序/3.root-MUSIC算法MATLAB程序/root_music.m

    % Developed by xiaofei zhang (南京航空航天大学 电子工程系 张小飞)
% EMAIL:zhangxiaofei@nuaa.edu.cn

clear all
close all
derad = pi/180;
radeg = 180/pi;
twpi = 2*pi;
kelm = 8;               % 
dd = 0.5;               % 
d=0:dd:(kelm-1)*dd;     % 
iwave = 3;              % number of DOA
theta = [10 20 30];  
snr = 20;               % input SNR (dB)
n =200;                % 
A=exp(-j*twpi*d.'*(sin(theta*derad)));
S=randn(iwave,n);
X0=A*S;
X=awgn(X0,snr,'measured');
Rxx=X*X';
InvS=inv(Rxx); %%%%
[EVx,Dx]=eig(Rxx);%%%% 
EVAx=diag(Dx)';
[EVAx,Ix]=sort(EVAx);
EVAx=fliplr(EVAx);
EVx=fliplr(EVx(:,Ix));
% 
% Root-MUSIC
Unx=EVx(:,iwave+1:kelm);
syms z
pz = z.^([0:kelm-1]');
pz1 = (z^(-1)).^([0:kelm-1]);
fz = z.^(kelm-1)*pz1*Unx*Unx'*pz;
a = sym2poly(fz)
zx = roots(a)
rx=zx.';
[as,ad]=(sort(abs((abs(rx)-1))));
DOAest=asin(sort(-angle(rx(ad([1,3,5])))/pi))*180/pi